package edu.ues21.tcs.ecommerce2011.mvc.dao;

import java.util.List;

import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.transaction.annotation.Transactional;

import edu.ues21.tcs.ecommerce2011.mvc.model.Usuario;

/**
*
* @author eandre fmantaras
*/
@Transactional
public class UsuarioDAOImpl implements UsuarioDAO {

		// Declaro el hibernate template.iberna
		private HibernateTemplate hibernateTemplate;

		// Le seteo el sessionFactory que le inyecto al hibernateTemplate.
		public void setSessionFactory(SessionFactory sessionFactory) {
			this.hibernateTemplate = new HibernateTemplate(sessionFactory);
			// this.sessionFactory = sessionFactory;
			// this.hibernateTemplate.setSessionFactory(sessionFactory);
		}

		public void save(Usuario usuario) {

			hibernateTemplate.merge(usuario);

		}

		public void delete(String nombreUsuario) {

			Usuario usuario = (Usuario) hibernateTemplate.load(Usuario.class,nombreUsuario);
			// Elimino el usuario de la tabla Usuario.
			hibernateTemplate.delete(usuario);

		}

		@SuppressWarnings("unchecked")
		@Transactional(readOnly = true)
		public List<Usuario> getAll() {

			return hibernateTemplate.find("from Usuario");
		}
		
		@Transactional(readOnly = true)
		public Usuario getUsuario(String nombreUsuario) {

			return hibernateTemplate.get(Usuario.class, nombreUsuario);
		}

}